package base.jfinal;

import com.jfinal.aop.Interceptor;
import com.jfinal.aop.Invocation;
import com.jfinal.log.Log;

import java.util.HashSet;
import java.util.Set;

/**
 * 管理用户后台权限验证拦截器
 */
public class PermissionInterceptor implements Interceptor {
	public Log log=Log.getLog(getClass());
	
	private static final Set<String> excludedActionKeys = new HashSet<String>();
	 
	  public static void addExcludedActionKey(String actionKey) {
	   excludedActionKeys.add(actionKey);
	  }
	  
    /** 获取当前系统操作人 */
    @Override
    public void intercept(Invocation inv) {
//        inv.getController().getResponse().addHeader("Access-Control-Allow-Origin","*");
//        inv.getController().getResponse().addHeader("Access-Control-Allow-Methods","POST");
//        inv.getController().getResponse().addHeader("Access-Control-Allow-Headers","x-requested-with,content-type");
//        if(inv.getActionKey().contains("/svr/app")
//                || inv.getActionKey().contains("/svr/msg")
//                || inv.getActionKey().contains("/svr/api")
//                || inv.getActionKey().contains("/svr/wx")){
//            inv.invoke();
//            return;
//        }
        if (!excludedActionKeys.contains(inv.getActionKey())) {
            if(inv.getController().getRequest().getSession(false)!=null && inv.getController().getRequest().getSession(false).getAttribute("SessionVO")==null){
                inv.getController().renderJson("{\"err\":-9}");
                inv.getController().getRequest().getSession().invalidate();
                return;
            }else if(inv.getController().getSession(false)==null || inv.getController().getSession().getAttribute("SessionVO")==null){
                //session中不存在值或不存在"sessionvo" 对象,则表示已超时
                inv.getController().renderJson("{\"err\":-9}");
                inv.getController().getRequest().getSession().invalidate();
                return;
            }
        }
        inv.invoke();
    }
}